Several important computer technologies rely, to a great extent, upon rapid delivery of information from a central storage location to remote devices. For example, in the client/server model of computing, one or more servers are used to store information. Client computers or processes are separated from the servers and are connected to the servers using a network. The clients request information from one of the servers by providing a network address of the information. The server locates the information and transmits it over the network to the client, completing the transaction.
The World Wide Web is a popular application of the client/server computing model. A client, such as a computer or a software process such as a browser program, is connected to a global information network called the Internet, either directly or through an intermediary such as an Internet Service Provider, or an online information service. A server is likewise connected to the Internet. The client and server communicate using one or more agreed-upon protocols that specify the format of the information that is communicated. The most widely used protocol for the World Wide Web is the Transmission Control Protocol (TCP). It is a virtual circuit protocol that is one of the core protocols of the Internet protocol suite, often simply referred to as TCP/IP. Using TCP, applications on networked hosts can create connections to one another, over which they can exchange streams of data. The protocol guarantees reliable and in-order delivery of data from sender to receiver.
The server has a server name in an agreed-upon format that is indexed at a Domain Name Server (DNS). The client looks up the name of the server at the DNS and establishes a connection to the server using a communication protocol called the Hypertext Transfer Protocol (HTTP). A Uniform Resource Locator (URL) uniquely identifies each page of information stored on the server. A URL is a form of network address that identifies the location of information stored in a network. The logical path that connects a client to a server is called a connection. In practice, a connection is a set of data values that identify a hardware port, buffers, and storage areas that are dedicated to a particular path between client and server.
When buffered data communications is used, fast member mechanisms called buffers are interposed between the connections and the computer system. The connections fill the buffers with data at a rate proportional to the communication speed of the connection. Ideally, the system removes data from the buffers at the identical rate at which the buffers are filled. However, sometimes the buffers on the servers may be full due to a large number of client connections and a vast amount of data that needs to be communicated. As a result, clients might experience slow or dropped connections. The servers might have little knowledge that connections are being dropped since all the buffers are full and the data is not reaching the servers even after repeated attempts to resend the data by the clients.
In these and other contexts, a key factor that limits the performance of network communications among devices is the efficiency with which a central server can communicate with information to a client. In a networked environment, it is common for many clients to connect to one or more servers. For example, at Yahoo!, hundreds of thousands of servers provide services to hundreds of millions of clients over the Internet. To ensure quality of services, service providers need to monitor and estimate the response time for clients for trouble shooting and server capacity planning. However, due to the large number of clients and servers, monitoring and estimation response time, especially relative to or as observed by clients, are challenging tasks.